﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using FrameConstructor;

namespace TetrisShape
{
    public class Shape
    {
        private List<Block> block = new List<Block>();
        public List<Block> ReturnBlock { get { return block; } }

        private List<Shape> MynewShape = new List<Shape>();
        public List<Shape> ReturnShape { get { return MynewShape; } }

        public void AddShape(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4)
        {
            Block Firstblock = new Block(x1, y1);
            block.Add(Firstblock);
            Block Secondblock = new Block(x2, y2);
            block.Add(Secondblock);
            Block Thirdblock = new Block(x3, y3);
            block.Add(Thirdblock);
            Block Fourthblock = new Block(x4, y4);
            block.Add(Fourthblock);
        }

        public Shape CreateRandomShape(Frame fr, Shape sh)
        {
            Random rnd = new Random();
            int i = rnd.Next(7);
            switch (i)
            {
                //case 0: sh.AddShape(fr.StartX + 6, fr.StartY + 1, fr.StartX + 6, fr.StartY + 2, fr.StartX + 6, fr.StartY + 3, fr.StartX + 6, fr.StartY + 4); Console.ForegroundColor = ConsoleColor.Red; break; //Line
                //case 1: sh.AddShape(fr.StartX + 5, fr.StartY + 1, fr.StartX + 5, fr.StartY + 2, fr.StartX + 6, fr.StartY + 1, fr.StartX + 6, fr.StartY + 2); Console.ForegroundColor = ConsoleColor.Blue; break; //Block
                //case 2: sh.AddShape(fr.StartX + 5, fr.StartY + 1, fr.StartX + 6, fr.StartY + 1, fr.StartX + 7, fr.StartY + 1, fr.StartX + 6, fr.StartY + 2); Console.ForegroundColor = ConsoleColor.Yellow; break; //T
                //case 3: sh.AddShape(fr.StartX + 5, fr.StartY + 1, fr.StartX + 5, fr.StartY + 2, fr.StartX + 6, fr.StartY + 2, fr.StartX + 6, fr.StartY + 3); Console.ForegroundColor = ConsoleColor.Green; break; //ZigZag
                //case 4: sh.AddShape(fr.StartX + 6, fr.StartY + 1, fr.StartX + 6, fr.StartY + 2, fr.StartX + 5, fr.StartY + 2, fr.StartX + 5, fr.StartY + 3); Console.ForegroundColor = ConsoleColor.Cyan; break; //ZigZagReverse
                //case 5: sh.AddShape(fr.StartX + 5, fr.StartY + 1, fr.StartX + 6, fr.StartY + 1, fr.StartX + 5, fr.StartY + 2, fr.StartX + 5, fr.StartY + 3); Console.ForegroundColor = ConsoleColor.DarkBlue; break; //G
                //case 6: sh.AddShape(fr.StartX + 6, fr.StartY + 1, fr.StartX + 5, fr.StartY + 1, fr.StartX + 6, fr.StartY + 2, fr.StartX + 6, fr.StartY + 3); Console.ForegroundColor = ConsoleColor.DarkYellow; break; //GReverse
                case 0: sh.AddShape(fr.StartX + 6, fr.StartY + 4, fr.StartX + 6, fr.StartY + 3, fr.StartX + 6, fr.StartY + 2, fr.StartX + 6, fr.StartY + 1); Console.ForegroundColor = ConsoleColor.Red; break; //Line
                case 1: sh.AddShape(fr.StartX + 6, fr.StartY + 2, fr.StartX + 6, fr.StartY + 1, fr.StartX + 5, fr.StartY + 2, fr.StartX + 5, fr.StartY + 1); Console.ForegroundColor = ConsoleColor.Blue; break; //Block
                case 2: sh.AddShape(fr.StartX + 6, fr.StartY + 2, fr.StartX + 5, fr.StartY + 1, fr.StartX + 6, fr.StartY + 1, fr.StartX + 7, fr.StartY + 1); Console.ForegroundColor = ConsoleColor.Yellow; break; //T
                case 3: sh.AddShape(fr.StartX + 6, fr.StartY + 3, fr.StartX + 6, fr.StartY + 2, fr.StartX + 5, fr.StartY + 2, fr.StartX + 5, fr.StartY + 1); Console.ForegroundColor = ConsoleColor.Green; break; //ZigZag
                case 4: sh.AddShape(fr.StartX + 5, fr.StartY + 3, fr.StartX + 5, fr.StartY + 2, fr.StartX + 6, fr.StartY + 2, fr.StartX + 6, fr.StartY + 1); Console.ForegroundColor = ConsoleColor.Cyan; break; //ZigZagReverse
                case 5: sh.AddShape(fr.StartX + 5, fr.StartY + 3, fr.StartX + 5, fr.StartY + 2, fr.StartX + 5, fr.StartY + 1, fr.StartX + 6, fr.StartY + 1); Console.ForegroundColor = ConsoleColor.DarkBlue; break; //G
                case 6: sh.AddShape(fr.StartX + 6, fr.StartY + 3, fr.StartX + 6, fr.StartY + 2, fr.StartX + 6, fr.StartY + 1, fr.StartX + 5, fr.StartY + 1); Console.ForegroundColor = ConsoleColor.DarkYellow; break; //GReverse
            }
            MynewShape.Add(sh);
            return sh;
        }
    }
}
